ヘッダーをスキップ
Oracle TimesTen In-Memory Databaseアーキテクチャ概要
リリース6.0
B25763-01
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

チェックポイント

チェックポイントを使用すると、データ・ストアのスナップショットがディスク上のファイルに転送されます。システム障害が発生した場合、TimesTenでは、ログ・ファイルとともにチェックポイント・ファイルを使用して、データ・ストアをクラッシュ前の状態(トランザクションの一貫性を保つ最後の状態)にリストアできます。アプリケーションではttCkpt()またはttCkptBlocking()プロシージャをコールすることで、チェックポイント処理を開始できます。

TimesTenでは、データ・ストアごとに2つのチェックポイント・ファイルDataStoreName.ds0とDataStoreName.ds1が保持されます。データ・ストアのディスクへのチェックポイント処理が行われると、TimesTenは2つのチェックポイント・ファイルのうち最も古いファイルを上書きします。

最後のチェックポイント処理以降に変更されたデータのみが、チェックポイント・ファイルに再書込みされます。チェックポイント処理では、最後のチェックポイント以降に変更されたブロックのデータ・ストアをスキャンします。次に、それらの変更についてチェックポイント・ファイルを更新し、不要なログ・ファイルを削除します。

チェックポイント処理の頻度が十分でない場合、ログ・ファイルがディスク上に蓄積されます。ログ・ファイルが蓄積されると、ディスク領域が不足し、システム障害時のリカバリ処理時間が長くなります。一方、チェックポイント処理が頻繁すぎると余分なオーバーヘッドが発生し、そのデータ・ストアを使用している他のアプリケーションのパフォーマンスに影響する可能性があります。

システム障害が発生した場合、TimesTenは最新の一貫性のあるチェックポイント・ファイルを使用して、ログ・ファイルを適用し、新しいチェックポイント・ファイルを作成することによって、データ・ストアをリカバリできます。ディスク・ベースのロギングが有効な場合、この新しいチェックポイント・ファイルには、障害の前にディスクに書き込まれたトランザクションが含まれます。詳細は、「ログおよびチェックポイント・ファイルからのリカバリ」を参照してください。

図7.2 チェックポイント処理

ブロッキングおよび非ブロッキング(ファジー)・チェックポイント

チェックポイントには、ブロッキングと非ブロッキングがあります。

アプリケーションでttCkptBlocking()プロシージャをコールして、ブロッキング・チェックポイントを開始できます。このチェックポイントでは、トランザクション一貫性チェックポイントを構成するために、データ・ストアへの排他アクセスが一時的に必要になります。ブロッキング・チェックポイントの処理中、他の新しいトランザクションはチェックポイント・トランザクションの後のキューに入れられます。その結果、長時間実行するトランザクションがあると、他の多数のトランザクションを待機させることとなります。ブロッキング・チェックポイントからのリカバリにログは必要ないため、このタイプのチェックポイントではディスク・ベースのロギングは必要ありません。

ディスク・ベースのロギングが有効な場合は、アプリケーションでttCkpt()プロシージャをコールして、非ブロッキング・チェックポイントを開始できます。これはファジー・チェックポイントと呼ばれることもあります。非ブロッキング・チェックポイントでは、データ・ストアに対するロックは必要ないため、チェックポイントの処理中に、複数のアプリケーションが同じデータ・ストアに対して、トランザクションのコミットまたはロールバックを非同期に実行できます。非ブロッキング・チェックポイントを使用している場合、システムがクラッシュすると、TimesTenはログを使用してチェックポイントからリカバリします。そのため、非ブロッキング・チェックポイントではディスク・ベースのロギングが必要になります。

ログおよびチェックポイント・ファイルからのリカバリ

システム・クラッシュやプロセス障害によって、データ・ストアが無効または破損すると、データ・ストアへのすべての接続が無効になります。アプリケーションが障害のあったデータ・ストアに再接続すると、サブデーモンがデータ・ストアに新しいメモリー・セグメントを割り当て、チェックポイント・ファイルおよびログ・ファイルからそのデータをリカバリします。

リカバリ中、最新のチェックポイントがメモリーに読み込まれ、永続的にコミットされたすべてのトランザクションが適切なログ・ファイルからロールフォワードされます。コミットされていないトランザクション、またはロールバックされたトランザクションはリカバリされません。

障害発生時も絶えずTimesTenデータにアクセスする必要のある、ミッション・クリティカルなアプリケーションについては、「レプリケーション」を参照してください。

図7.3 ログおよびチェックポイント・ファイルからのリカバリ